home *** CD-ROM | disk | FTP | other *** search
- //-----------------------------------------------------------------------------
- // Torque Game Engine
- // Copyright (C) GarageGames.com, Inc.
- //-----------------------------------------------------------------------------
-
- //------------------------------------------------------------------------------
- // Cursor Control
- //------------------------------------------------------------------------------
-
- $cursorControlled = true;
-
- function cursorOff()
- {
- if ( $cursorControlled )
- lockMouse(true);
- Canvas.cursorOff();
- }
-
- function cursorOn()
- {
- if ( $cursorControlled )
- lockMouse(false);
- Canvas.cursorOn();
- Canvas.setCursor(DefaultCursor);
- }
-
- // In the CanvasCursor package we add some additional functionality to the
- // built-in GuiCanvas class, of which the global Canvas object is an instance.
- // In this case, the behavior we want is for the cursor to automatically display,
- // except when the only guis visible want no cursor - most notably,
- // in the case of the example, the play gui.
- // In order to override or extend an existing class, we use the script package
- // feature.
-
- package CanvasCursor
- {
-
- // The checkCursor method iterates through all the root controls on the canvas
- // (basically the content control and any visible dialogs). If all of them
- // have the .noCursor attribute set, the cursor is turned off, otherwise it is
- // turned on.
-
- function GuiCanvas::checkCursor(%this)
- {
- %cursorShouldBeOn = false;
- for(%i = 0; %i < %this.getCount(); %i++)
- {
- %control = %this.getObject(%i);
- if(%control.noCursor == 0)
- {
- %cursorShouldBeOn = true;
- break;
- }
- }
- if(%cursorShouldBeOn != %this.isCursorOn())
- {
- if(%cursorShouldBeOn)
- cursorOn();
- else
- cursorOff();
- }
- }
-
- // below, all functions which can alter which content controls are visible
- // are extended to call the checkCursor function. For package'd functions,
- // the Parent:: call refers to the original implementation of that function,
- // or a version that was declared in a previously activated package.
- // In this case the parent calls should point to the built in versions
- // of GuiCanvas functions.
-
- function GuiCanvas::setContent(%this, %ctrl)
- {
- Parent::setContent(%this, %ctrl);
- %this.checkCursor();
- }
-
- function GuiCanvas::pushDialog(%this, %ctrl, %layer)
- {
- Parent::pushDialog(%this, %ctrl, %layer);
- %this.checkCursor();
- }
-
- function GuiCanvas::popDialog(%this, %ctrl)
- {
- Parent::popDialog(%this, %ctrl);
- %this.checkCursor();
- }
-
- function GuiCanvas::popLayer(%this, %layer)
- {
- Parent::popLayer(%this, %layer);
- %this.checkCursor();
- }
-
- };
-
- // activate the package when the script loads.
- activatePackage(CanvasCursor);